home *** CD-ROM | disk | FTP | other *** search
-
- ///////////////////////////////////////////////////
- // Willkommen zu GiGa's Cracking Tutorial //
- // * GERMAN * //
- ///////////////////////////////////////////////////
-
- Hallo du ( du der gerade Cracken lernen will ),
-
- Bevor es Losgeht m÷chte ein paar kleinigkeiten
- festlegen :
-
- ---------------------------------------------------
-
- 1.) Dieses Cracking Tutorial richtet sich an einen
- Totalen AnfΣnger .
- Es werden also keine Vorkenntnisse in ASM und
- Co. gebraucht :-)
-
- und
-
- 2.) Ich mag es nicht , wenn man wΣhrend meines
- tut's raucht ...
-
- ---------------------------------------------------
-
- Sachen die ben÷tigt werden:
-
- - SoftICE 3.x
- - W32Dasm 8.9
- - Hacker's View
- - Eine Dose Pepsi cola
- - Genⁿgend Zeit
- - Eine Aufl÷sung von 1024 x 768 pixeln (bitte kein WordWrap ,
- weil das dann alles scheisse aussieht :P)
-
- Es geht los ..... <freu>,<smile>,<griiiiiinnns>
-
- Als erstes leite ich dich in die Assembler
- ( Kurz ASM ) Programmierung ein .
- Dies ist dringen Notwendig , da man ohne ASM
- Kentnisse nicht Cracken kann . :-(
-
-
- =(*)= Register =(*)=
-
- Register sind sowas Σhnliches wie Variablen
- oder Container .
- Man kann in Sie Daten oder Speicher Adressen
- hinein packen .
- Von diesen Regies gibt es 16 & 32bit
- Version , die ich im volgenden Listing auf-
- gelistet habe ...
-
- 16bit Register:
-
- AX , BX , CX , DX , DI , BP , SP , IP , SI
-
- 32bit Register:
-
- EAX , EBX , ECX , EDX , EDI , EBP , ESP , EIP , ESI
-
- =(*)= Kommandos =(*)=
-
- Wie in jeder Programmiersprache , gibt es
- auch in ASM Funktionen .. diese kann man aber
- eigentlich nicht als solche bezeichnen ,
- weshalb ich Sie hier als Kommandos
- bezeichnen ( Liebe ASM Proofs , bitte
- nicht flamen :-)
- Da es nicht sehr klug wΣre hier alle
- Aufzulisten habe ich nur die genommen ,die
- fⁿr dich beim Cracken von bedeutung sind .
-
- Also , volgende solltest du dir merken:
-
- MOV
- SUB
- ADD
- CMP
- JNZ
- JZ
- JE
- JNE
- JMP
- PUSH
- CALL
- POP
- RET
-
- ErklΣrung:
-
- =(*)= MOV =(*)=
-
- steht fⁿr move , und bedeutet , verschiebe einen Wert von A nach B;
-
- Parameter:
- MOV Ziel,Info
-
- z.B. MOV EAX,Variable1
- oder MOV EAX,EBX
-
- folgendes geht nicht: MOV Variable1,Variable2
- Es mu▀ also immer ein Register mit im Spiel sein .
-
- =(*)= SUB =(*)=
-
- steht fⁿr Subtraktion , und bedeutet , Ziehe von A , B ab;
-
- Parameter:
- SUB Zahl,Zahl Die zweite Zahl , wird von der ersten abgezogen;
-
- z.B. MOV EAX,1
- MOV EBX,2
- SUB EBX,EAX
-
- Das Ergebniss ist EBX = 1
-
- Auch hier gilt , ein Register mu▀ dabei sein .
-
- =(*)= ADD =(*)=
-
- steht fⁿr Addieren , und bedeutet , Rechne A zu B;
-
- Parameter:
- ADD Zahl,Zahl Die zweite Zahl wird zu der ersten gezΣhlt;
-
- z.B. MOV EAX,1
- MOV EDX,1
- ADD EAX,EDX
-
- Das Ergebnis ist EAX = 2
-
- =(*)= CMP =(*)=
-
- steht fⁿr Compare ( zu deutsch: Vergleiche ) , CMP vergleicht
- zwei Register miteinander ; sehr wichtig beim Cracken !
-
- Parameter:
- CMP Register1,Register2
-
- Hier gibt es eine besonderheit ; sollten die beiden Register
- den gleichen inhalt haben , gibt das Kommando 0 zurⁿck .
- Ansonsten 1 .
-
- 0 = Gleich ( auf Englisch Equal )
- 1 = Nicht gleich ( b.z.w. Not Equal )
-
- z.B. MOV EAX,131561
- MOV EBX,1564
- CMP EAX,AB Die Rⁿckgabe ist 1
-
- oder MOV EAX,131561
- MOV EBX,EAX EBX = Hat jetzt den inhalt von EAX , also 131561
- CMP EAX,EBX Die Rⁿckgabe ist 0
-
- =(*)= JNZ =(*)=
-
- steht fⁿr Jump If not Zero , das bedeutet , springe zu A wenn der CMP
- vorher nicht gleich war .
-
- Parameter:
- JNZ Label1
-
- z.B. MOV EAX,112233 ; Die von dir eingebene Reg Nummer :-)
- MOV EDX,65438 ; Die richtige Reg Nummer :-)
- CMP EAX,EDX ; Vergleiche die Beiden ... nicht gleicht .. also 1
- JNZ WrongSerial ; Springe wenn nicht 0 zu WrongSerial
-
- =(*)= JZ =(*)=
-
- steht fⁿr Jump if Zero , das bedeutet , springe zu A wenn der CMP vorher
- 0 zurⁿck gab , also beide Ergebnisse gleich waren .
-
- Parameter:
- JZ Label1
-
- z.B. MOV EAX,110 ; Nummer Nummer 1 <hehe>
- MOV EDX,110 ; Nummer Nummer 2
- CMP EAX,EDX ; Vergleiche die Beiden ... gleich .. also 0
- JZ RightSerial ; Springe wenn 0 zu RightSerial
-
- =(*)= JE =(*)=
-
- Tja , warum es dieses Kommando gibt es mir schleierhaft
- es bedeutet , Jump If Equal , also springe zu A wenn der
- Vorherige CMP Positiv ausging .
-
- Kurz und bⁿndig :
-
- JE kann man gleichsetzen mit JZ
-
- =(*)= JNE =(*)=
-
- Hier gilt das gleiche wie oben:
-
- JNE ist das gleiche wie JNZ
-
- =(*)= JMP =(*)=
-
- steht fⁿr Jump ( das war doch wirklich ma einfach )
-
- Parameter:
- JMP Label1
-
- z.B. MOV EAX,EBX
- SUB EBX,EDX
- ADD EAX,5
- JMP NΣchsteFunktion
-
- Im Klaartext :
- Bei JMP wird immer gesprungen , egal was vorher war
-
- =(*)= PUSH =(*)=
-
- steht fⁿr PUSH ( muhahaha ) mit push kann man/frau daten in den
- stack (spezieler Daten Bereich im RAM) legen .
- Wird ÷fters dazu verwendet , um Parameter fⁿr ein CALL Kommando
- Festzulegen ( siehe Kommando Call ; kommt als nΣchstes )
-
- Parameter:
- PUSH Register oder Speicheradresse
-
- z.B. MOV EAX,15
- PUSH EAX ; nun kann man EAX mit neuen daten fⁿllen , da die
- ; ursprⁿnglichen daten im RAM/Stack liegen .
-
- =(*)= CALL =(*)=
- steht fⁿr CALL , das heist soviel wie rufe eine , meistens externe ,
- Funktione , NICHT KOMMANDO , auf .
-
- Parameter:
- CALL DLL!Funktion
-
- Besonderheit :
- Sollte die aufgerufene funktion ihrerseits auch Parameter ben÷tigen
- werden sie vorher eingegeben !
-
- Kleines Beispiel , fⁿr eine externe Funktion , mit Parametern :
-
- MOV EAX,[004031F2F4] ; EAX hat jetzt den Inhalt des RAM Speichers
- ; bei Adresse 004031F2F4 .
- ; Bei dieser Adresse steht z.B. "chance"
- MOV ECX,[004031H9H1] ; ECX hat jetzt en inhalt von der RAM
- ; Adresse 004031H9H1 .
- ; Dort steht z.B. "test"
- PUSH EAX ; EAX wird in den Speicher ( Stack ) gepackt
- PUSH ECX ; Auch ECX kommt in den Speicher ( Stack )
- CALL USER32!lstrcmpA ; Die Externe Funktion lstrcmpA wird aus der
- ; USER32.DLL ausgefⁿhrt .
- ; Diese Funktion ben÷tigt zwei Parameter .
- ; Diese zwei Parameter sind EAX & ECX
-
- Was diese Funktion macht und welche Parameter Sie braucht
- wird in einem spΣteren Kapitel behandelt .
-
- =(*)= POP =(*)=
-
- steht fⁿr POP , mit POP kann man/frau poppen <hehe>
- kleiner scherz .. nein mit POP kann man , frⁿher mit PUSH in den Stack
- gelpackte Daten , wieder in das vorherige Register packen .
-
- Parameter:
- POP Register
-
- z.B. MOV EAX,15
- MOV ECX,200
- PUSH EAX ; 15 liegt jetzt im Stack
- PUSH ECX ; 200 liegt auch im Stack
- CALL USER32!lstrcmpA ; Die Funktion lstrcmpA wird aufgerufen
- MOV EAX,20 ; EAX ist jetzt 20
- MOV ECX,30 ; Und ECX 30
- POP EAX ; Die Daten werden wieder aus
- POP ECX ; dem Stack geholt !
- ; EAX ist jetzt wieder 15
- ; Und ECX 200
-
- POP kann man mit einer Speicher Funktion bei Spielen vergleichen .
- Erst werden die daten mit PUSH gespeichert ( in den Stack ge-
- packt) und spΣter dann mit POP wieder herausgeholt .
-
- =(*)= RET =(*)=
-
- steht fⁿr RETURN , mit diesem Kommando kann man aus einer
- Funktion wieder zurⁿck ins Hauptprogramm springen .
-
- Parameter:
- RET
-
- z.B. MOV EAX,111111 ; EAX hat jetzt 111111 als Inhalt
- CALL print ; Die INTERNE Funktion print wird aufgerufen
-
- START print: ; Start der print Funktion
- PUSH EAX ; EAX wird "gespeichert"
- POP EDI ; EDI wird "geladen"
- ..... ; Irgendwelcher code
- ... ; Fⁿr uns uninteressant
- RET ; Wir springen zurⁿck zum Hauptcode
- END Print ; Die Funktion print wird beendet
-
- Solltest du in einem Programm irgemdwo mal das Kommando
- RET sehen , weist du automatisch das es sich um eine unter Funktion
- handelt .
-
-
-
-
- ----------------------------------------------------------------------------------------------------------
-
- Puh .. jetzt hast du das ASM Tutorial entlich hinter dir .... :-)
- Und ? Bist du bereit fⁿr den zweiten Teil meines cooolen cracking
- tutorial's ? Ja ? Gut ! Dann geht's jetzt weiter ....
-
- GiGa's SoftICE Installations Manual for Dummies ... <smile>
-
- So , ich nehme mal an , da▀ du SoftICE jetzt auf deiner platte hast .
- Als erstes muss du es Installieren ! Dazu rufst du die Datei Setup.EXE
- auf , und folgst den Anweisungen .
- Nun , ich hoffe das du jetzt mit der GRUND Installation fertig bist .
- Um SoftICE nun zu Konfigurieren starte bitte das Programm : Symbol Loader
- Im normalfall solltest du es in der Programm Gruppe Numega SoftICE im
- Start Menu finden .
-
- In diesem Programm wΣhlst du dann im Menu "Edit" den Befahl:
- "SoftICE Init Settings .." aus .
- Wenn du alles richtig gemacht hast , solltest du jetzt das SoftICE
- Konfig Fenster vor dir sehen . :-)
-
- Klicke in diesem Fenster bitte auf den TAB String "Exports" , und dann
- auf "Add.." .
- In dem nun erschienen Dialog gibst du in die obere linke Textbox bitte
- "C:\WINDOWS\SYSTEM\Kernel32.dll" ein und drⁿckst dann Enter bzw klickst
- auf OK . ACHTUNG: Sollte dein Windows Verzeichnis NICHT C:\WINDOWS
- sein must den oben genannten Pfad abgleichen z.B. C:\WIN95\SYSTEM\Kernel32.dll !!!
- So denne .. das gleiche nochmal nur diesmal gibst du nicht ...\...\Kernel32.dll ein
- sonder User32.dll . Das machst du genauso wie oben ... . Als erstest klickste auf "Add..."
- dann gibst du C:\DeinWindowsDir\System\User32.dll ein und klickst auf OK bzw drⁿckst
- Enter .
-
- Tada .. der erste abschnitt zur Konfiguration von SoftICE ist beendet .. !!!
-
- HA HA .. Du dachtest wohl ich bin schon fertig mit dir .. he he ... ne ne weit
- gefehlt .. jetzt kommt das fein tuning :
-
- Klicke jetzt im SoftICE Init Settings Dialog auf den TAB String "General" .
- Siehst du die TextBox ⁿber der "Initialization String" steht ?
- Loesche den ganzen Inhalt dieser Text Box und schreibe volgendes hinein:
- "WD;WR;X;" ( natⁿrlich ohne die GΣnsefⁿschen ) !
-
- JAAAAAAA !!!!!! Jetz haste die Installation beendet !!! YAHOOOO !
-
- --------------------------------------------------------------------------------------------------------
-
-
- Sodele , hier geht es erst richtig los .
- Hier werde ich dir zeigen welche m÷glichkeiten es gibt , um ein
- Programm zu cracken :=)
-
- GiGa's Cracking Man÷ver <The Original :-)>
-
- Also , dann las uns mal ein paar Proggy's knacken ..
-
-
- Bevor wir uns nun daran machen , eine Seriennummer auswindig zu machen
- oder einen Nag Screen zu removen mⁿssen wir das Programm analysieren .
- Dazu schauen wir uns als erstes einmal die EXE Datei selbst an .
- Benutze hierzu am besten PEBrowse (findest du in der beiligenden ZIP
- Datei) . Starte PEB. und wΣhle dann im Menⁿ "File" den Eintrag "Load..."
- aus . In dem nun erschienen Dialog kannst du die Datei auswΣhlen die du
- Analysieren willst :)
- Ich habe diesem Tutorial ein , von mir geschriebenes , CrackMe beigelegt
- da ich hier nicht zu illegalen Handlungen anstiften m÷chte .
-
- Also dann . ... Entpacke das CrackMe und wΣhle es in dem Load Dialog
- von PEBrowse aus .
- Schaue dir jetzt erstma alle Spaten in aller Ruhe an .
- Fⁿr uns in erster Linie interessant ist der "Import Section"
- Abschnitt .
- Na biste in dem Abschnitt nun endlich angekommen ?
- Ich will nΣmlich nicht immer auf diese Nachzⁿgler warten !! :)
-
- Okay .. Links im Fenster siehst du verschiedene DLL's aufgelistet .
- Bei meinem CrackMe sollten die volgenden zu erkΣΣnen sein ..
- (Wenn du sie nicht sehen kannst wⁿrde ich Vorschlagen , das du
- dir ne AnstΣndige Brille zulegst) :
-
- KERNEL32.dll
- MFC42.DLL
- MSVCRT.dll
- USER32.dll
-
- Die beiden mittleren (MFC42 & MSVCRT) sind fⁿr uns wiederum
- uninteressant . (Bei ihnen handelt es sich um die Runtime
- Libraries vom MS-Visual C++)
- Jetzt zΣΣΣΣhlen nur KERNEL und USER ...
- Vielleicht fΣllt dir auf , das dies auch die DLL's sind die du
- bei der SoftICE Installation angegeben hast :)) .
-
- Diese beiden Dateien werden dir noch oft begegnen , also sch÷n
- im GedΣchniss halten .. Braves Hⁿndchen ... ;
-
- Klick jetzt einfach mal eine der beiden Dateien an .. zB. KERNEL32.dll
- du siehst nun im zweiten Bereich das dort ewisse Windows Funktionen
- aufgelistet sind .
- Diese Windows Funktionen werden von meinem CrackMe verwendet .
-
- Damit wir nun ohne Pause weitermachen k÷nnen , musst du einmal Windows
- neustarten , damit die Σnderungen in der winice.dat wirksam werden .
- Jene haste du eben mit der Grafischen benutzerfⁿhrung von SoftICE
- durchgefⁿhrt.
-
- Sodele , ich nehme mal an das Windows nun neugestartet wurde !
- Jetzt drⁿckst du einfach mal STRG + D .
- Siehst du was? Jup , das SoftICE Debugger Fenster sollte nun
- in den Fordergrund gepushed worden sein . Nun ..aber was is das da alles ??
- jo .. Der Fensterabschnitt (ich nenn das jetzt einfach mal so) ganz oben
- stellt die Register da , erinnerst du dich noch , was Register waren??? Jo genau
- das sind sowas Σnliches wie Variablen .
- Das ganze da oben sollte ungefΣhr wie folgt aussehen:
- ________________________________________________
- |┤ |
- | EAX = 05445D EDX = 00FFFFF ECX = 778922 |
- | dl = 0 df = 54 bl = 4 |
- `------------------------------------------------
- (Ich weiss es ist hΣsslich , aber besser bekomme ich des nich hin :)
-
- Die Zahlen hinter den Registern geben die Speicher Addressen an , an denen die entsprechenden
- Daten stehen , die den Registern zugeordnet sind .
- Kleines Beispiel:
- EAX = 05445D
- ^ bedeutet das im Speicher an der Addresse 05445D das steht was in EAX ist ..zB.
- steht an jener Addresse 'Blaaaa' , und weil diese Addresse EAX zugeordnet ist
- steht auch in EAX 'Blaaaa' .
-
- Wenn du an dem SoftICE Kommando Prompt nun 'D EAX' eingibst , siehst du was in EAX steht .
- 'D EAX' ist also das gleiche wie 'D 05445D' .
-
- So , ich glaube das erste Fensterlein ist gut genug erklΣrt , nun kommen wir zum nΣchsten .
- Das nΣchste ist das dadrunter :P
- Das siegt ca. so aus:
- ________________________________________________________
- |┤00045621: 04 05 06 07 08 09 10 11 12 13 14 15 Blaaaaaaa |
- | 00045622: 16 17 18 19 20 21 22 23 24 25 26 27 ..5dvc... |
- | 00045623: 28 29 30 31 32 33 34 35 36 37 38 39 ARM-45566 |
- | 00045623: 40 41 42 43 44 45 46 47 48 49 50 51 ......... |
- `--------------------------------------------------------
- (jaaa... ich weiss ..des hier is auch hΣΣΣΣsssliche)
-
- Hier kannnste sehen was gerade so im Speicher ab geht ..
- Wenn du wie oben beschriben beispielsweise 'D EAX' eingeben
- hattest , siehst du in diesem Fenster was in EAX drinne ist.
- Wenn du schonmal mit einem Hex editor gearbeitet hast , wird dir
- dieses Fenster wahrscheinlich bekannt vorkommen , mit dem kleinen
- unterschied das du hier nich das zeug ziehst was in einer datei ist ,
- sondern das was is im Speicher rum dudelt .
- Mehr ist hierzu nicht zusagen .
-
- Soooooo ........ nun kommt das eigentlich wichtigste Fenster im ganzen
- Spiel ..pardong im .. im ..immm ???? in ... ich meine in , in SoftICE natⁿrlich .
- Das ... DAS .... DAS CODE FENSTER!!!! *STAUN*
- yupp , in diesem Fenster steht der ASM code der zur Run Time (laufzeit) von SoftICE
- disassmbled wurde .
- Jetzt im moment werdet ihr hier wahrscheinlich nichts sehr interessantes sehen , aber wenn
- wir gleich mein CrackMe 'debuggen' schon ..
- Also dann mal los .. (eigentlich wollte ich hier noch ne skizze von dem teil hinmachen [von dem Fenster
- nicht vom CrackMe] , aber nun hab ich keine lust mehr:)
-
- Du gehst nun also wieder aus SoftICE raus indem du wieder STRG + D oder F5 drⁿckst .
-
- Nun schaust du wieder in PEBrowse und guckst dir ma an welche tollen Funktionen aus der User32.dll
- von meinem CrackMe so gebraucht werden .
- Eigentlich interessiert es mich garnich was du da findest (:P) , denn es zΣhlt fⁿr uns zurzeit erstmal
- nur 'GetWindowTextA' & 'GetDlgItemTextA' .
- Zur erklΣrung dieser beiden (und noch zwei anderer):
-
- -----------------------------------------------------------------------------------------------------------
-
-
-
- =(*)= Windows API Funktionen =(*)=
-
-
- Windows API Funktionen sind das A & O von Windows Programmen ,
- es gibt kein Programm das ohne sie auskommt .
- Es gibt von ihnen Funktionen fⁿr das Zeichnen von Fenstern , fⁿr das Auslesen
- von Text Boxen , fⁿr das Vergleichen von Strings , fⁿr das Schliessen und ausfⁿhren
- von Programmen und und und ...
- By the way , API steht fⁿr Application Programming Interface .
-
- Jetzt hier alle aufzulisten , wΣre glatter selbstmord , deshalb wie auch schon oben
- bei den ASM Kommandos , liste ich hier nur die notwendigen auf :
-
- =(*)= GetDlgItemTextA =(*)=
-
- Diese Funktion liest den Inhalt von bestimmten Bedien Elemente aus.
- Die Parameter sehen (laut Windows API Hilfe) wie folgt aus:
-
- UINT GetDlgItemTextA(
-
- HWND hDlg, // handle of dialog box
-
- int nIDDlgItem, // identifier of control
-
- LPTSTR lpString, // address of buffer for text
-
- int nMaxCount // maximum size of string
-
- );
-
- Auf die Parameter geh ich hier nicht weiter ein , denn sie sind fⁿr
- das was wir machen erstmal ziemlich useless , auch wenn andere
- das anderes sehen .
-
- Diese Funktion ist eine der zwei meistbenutzten API Funktionen beim cracken ,
- also sch÷n merken ! :P
-
- =(*)= GetWindowTextA =(*)=
-
- Diese Funktion ist zu 90% Σnlich mit der vorherigen , sie tut genau das gleiche.
- Die Paramter lauten:
-
- int GetWindowTextA(
-
- HWND hWnd, // handle of window or control with text
-
- LPTSTR lpString, // address of buffer for text
-
- int nMaxCount // maximum number of characters to copy
-
- );
-
- Genau wie oben , gehe ich hier nicht nΣher auf die Parameter ein .
- Und , wie ihr wahrscheinlich euch schon gedacht habt , 'jaaa' diese Funktion ist
- die zweite der meistbenutzten Windows API Funktionen beim Cracken .
-
- =(*)= lstrCmpA =(*)=
-
- Diese Funktion ist sehr 'billig' , sie vergleicht zwei Strings miteinander .
- die Paramter wie immer aus der Windows API Hilfe lauten wiefolgt:
-
- int lstrCmpA(
-
- LPCTSTR lpString1, // address of first string
-
- LPCTSTR lpString2 // address of second string
-
- );
-
- Hierbei ist zu beachten das diese Funktion genauso wie das ASM Kommando '1' oder '0'
- zurⁿck gibt , jenachdem ob die beiden Strings gleich sind , oder nicht ...
-
- 0 = Gleich (equal)
- 1 = Ungleich (not equal)
-
- P.S.: Die Funktion ist hΣufig ..pardong EXTREME hΣufig bei InstallShield Serial Protections
- anzutreffen , solltet ihr also mal einen InstallShield knacken wollen , nimmt einfach lstrcmpA als
- breakpoint (was ein breakpoint ist kommt gleich) .
-
- =(*)= hmemcpy =(*)=
-
- Und hier ist nun die letzte WICHTIGE Funktion , sie wird immer dann aufgerufen , wenn irgendwelche
- Daten verschoben werden mⁿssen , also praktisch immer .
- Das ist auch einer der Grⁿnde wesshalb man diese Funktion meiden sollte .
-
- Parameter gibts hier 'keine' ..
- zumindest keine die uns irgendwie nⁿtzen k÷nnten .
-
- Diese 'tolllllllllleeeeeee' Funktion mⁿsst ihr bei Programmen verwenden die in Delphi
- geschrieben worden sind *grummel* , denn Delphi verwendet LEIDER nicht die anderen oben genannten
- Funktionen.
- ErklΣrung zur benutzung dieser Funktion folgt .
-
-
- ------------------------------------------------------------------------------------------------------------
-
-
- So , jetzt gehts ans eingemachte , wir cracken mein CrackMe .
- Jenes ist extreme einfach gehalten , also nichts fⁿr Profi Cracker :P
-
- - Startet Mein CrackMe und gebt als Name irgendwas ein , und als Serial beispielsweise '112233' .
- Ich wⁿrde vorschlagen , das ihr diese Serial immmer benutzt .. denn sie einen tollen vorteil .
- Und ihr wollt sicher wissen welchen , nich?? Okay ich verrate es euch .. man kann sie ganz simple in
- eine HEX Zahl umwandeln , was fⁿr spΣtere Programme sehr sinnfoll ist , denn wer hat schon immer einen
- Taschenrechner dabei der dezimal zahlen in Hex werte umrechnen kann :P (112233 = 31 31 32 32 33 33)
-
- - Nun habt ihr sicher die daten eingegeben oder etwa nich??? Also ich nehme mal an das ihr es habt nun
- switched mit STRG + D zu SoftICE und gibts 'bpx GetWindowTextA' ein .
- ErklΣrung: bpx = Breakpoint (zu deutsch Haltepunkt) , ihr k÷nnt SoftICE sagen , das es das System & damit auch
- euer Programm anhalten soll , wenn eine bestimmte Windows API Funktion aufgerufen wird . diese Funktion k÷nnt
- ihr mit bpx FunktionsName festlegen .
-
- - So , nachdem ihr den bpx gesetzt habt geht ihr mit F5 wieder zurⁿck zu Windows & meinem CrackMe und klickt auf 'OK'
- um die Serial Check Prozedur zu starten . Nun sollte SoftICE euer System anhalten und in den Fordergrund kommen.
- Hier seht nun in dem Fenster mit dem disassembleten code die stelle wo er das System angehalten hat .
-
- - Da Diese Stelle aber euch nix bringt , sondern ihr ja wissen wollt , wo GetWindowTextA aufgerufen worden ist ,
- drⁿckt ihr einmal F11 (damit geht ihr zu der Stelle die GetWindowTextA aufgerufen hat) .
-
- - Nun seht ihr im Code Fenster meinen Programm code der den Namen ausliehst ..aber was bringts denkt ihr euch nun ..
- Und ihr habt recht ..nix ..ihr wollt ja die Serial Check Prozedur ..deshlab drⁿckt ihr STRG + D bzw F5 um SoftICE
- zu verlassen , aber was passiert , ihr landet wieder in SoftICE und zwar diesmal da wo GetWindowTextA die zweite
- Text Box ausliest , die mit der Serial , da wo ihr hinwolltet .
-
- - SO .. ich glaube ihr wisst schon was ihr jetzt machen mⁿsst ..oder? Also als erstes drⁿckt ihr wieder F11 um zu der
- Stelle zu kommen die mein Programm aufgerufen hat . Nun k÷nnt ihr mir 'D RegisterName' abfragen was in den Registern
- ist . z.B. mit 'D EAX' oder 'D ECX' .
-
- - Wenn ihr nun oben in das Register Fenster guckt , da wo all die register Aufgelistet sind , seht ihr
- das bei EAX = 00000006 steht . Dies ist die lΣnge der Serial die ihr eingeben habt ..denn 112233 ist insgesammt
- 6 zeichen lang , wenn ihr natⁿrlich eine andere serial genommen habt ist die lΣnge dort auch anders :P
-
- - Nun drⁿckt ihr solange F10 bis der braune Balken ⁿber dem POP nach dem CALL ist , der da als erstes steht .
- Wenn ihr genauer aufgepasst habt , ist euch sicher aufgefallen , das aufeinmal die Register
- (nicht alle aber einige) hellblau aufleuchten , das bedeutet das sich der inhalt verΣndert hat ,
- gibt nun einfach mal 'D ECX' (eine der verΣnderten Register) ein , und ihr seht in dem Speicher Fenster ,
- die von euch eingebene Serial *toolllllllllll* :P
-
- - Traced nun ein stⁿckchen weiter (tracen nennt man das , wenn man mit F10 durch den Code surft) bis ihr
- bei einem RET angekommen sein , na was hiess das doch gleich??? Richtig daran kann man erkennen das man in
- einer Unter Funktion ist :P Also das Programm ist doch etwas gr÷sser als es am anfang scheint ;)
-
- - Okidoki , nun weiter.. jetzt traced ihr solange weiter bis ihr bei folgender Stelle ankommt:
-
- xxxx:xxxxxxx MOV EAX,[EDI+64]
- xxxx:xxxxxxx MOV ESI,00403100
- xxxx:xxxxxxx MOV DL,[EAX]
- xxxx:xxxxxxx MOV BL,[ESI]
- xxxx:xxxxxxx CMP DL,BL
-
- Na gefunden??? Das will ich doch schwer hoffen (ⁿberings 00403100 kann bei euch eine
- andere Zahl sein (speicher Addresse) da das nich auf allen Rechnern gleich ist .
- So nun zur erklΣrung des ganzen:
-
- Ihr denkt euch jetzt wahrscheinlich als erstes , woher weiss der GiGA , das diese stelle hier , die ist
- die den Serial code vergleicht , oder?? Ganz einfach ich hab mir mit jeder zeile die ich durch getraced habe
- das angeguckt , was ich gefunden hab und diese Stelle sah als einzigstes interessant aus , schon alleine
- deswegen , weil hier ein CMP (Compare) vorkommt.
-
- Wenn ihr nun an jener Stelle angekommen seit , gibt doch einfach mal 'D EAX' ein .. na was seht ihr?
- Korrekt , eure Serial (z.B. 112233) .
- Nun gibt mal 'D ESI' ein ... UND .. UND ..was seht ihr nun ? Richtig , die richtige serial , ich werde sie
- hier nicht hintippen , sonst ist ja der ganze spass weg!
-
- Jetzt werde ich den oben abgedruckten code schnipsel noch etwas genauer erlΣutern:
-
- MOV EAX,[EDI+64] ;Hier wird das was im Speicher an der Addresse EDI+64 nach EAX verschoben
- MOV ESI,00403100 ;Das gleiche wie oben nur das hierbei ein anderer Wert nach ESI gemoved wird
- MOV DL,[EAX] ;EAX (eure Serial) wird nach DL gepackt
- MOV BL,[ESI] ;ESI (die richtige Serial) wird nach BL gehauen
- CMP DL,BL ;DL (B÷ser Junge) wird mit BL (guter Junge) verglichen
- ... ;Auswertung des Ergebnisses , wenn der CMP 0 , also gleich , zurⁿck gibt
- ... ;kommt die 'Gute Serial' Msgbox , ansonsten die schlechte
-
- Na , war das schwer???
- Ich hoffe ihr habt euch die richtige Serial notiert , wenn nicht ..tjo Arschkarte , alles nochmal machen :P
- Sodele ich nehme mal an das ihr jetzt die richtige Serial irgendwo hingeschrieben habt , gebt jene jetzt
- beim CrackMe ein ..ABER drⁿckt noch nicht auf OK ..denn wenn ihr das jetzt macht switched SoftICE wieder hoch
- und das wollen wir ja nich , oder?
- Also um das zuverhindern wechselt ihr zu SoftICE mit STRG + D und gibt folgendes ein -> 'BC*'
- Das ganze steht fⁿr Breakpoint Clear ALL (* = ALL) , nun k÷nnt ihr mit ruhigem gewissen SoftICE schliessen
- (drⁿckt F5 oder STRG + D) und k÷nnt mit OK die Serial bestΣtigen , wenn ihr euch nicht vertippt habt ,
- sollte nun die 'Yooo , peace Bruder , du hast es geschaft!' MessageBox kommen *grins*
-
- -------------------------------------------------------------------------------------------------------------------
-
-
- =(*)= Abschliessende Worte =(*)=
-
- jo Leute , das wars .. mein Cracking Tutorial is nu zu Ende , aber bevor ihr nun alle nach hause geht
- m÷chte ich euch noch folgende gute RatschlΣge auf den Weg geben :
-
- - Versucht euch als anfΣnger nicht an Programmen mit Dongels oder Σnliches (ihr werdet wenig erfolg haben :/)
-
- - Cracked NUR mit SoftICE , viele leute cracken ihre Programme mit W32Dasm & Hiew (Hackers View) , des ist aber
- Lame (das ist nich nur meine Meinung!) , einen Jump suchen und den dann abΣndern kann jeder , deshalb brauch
- man sich nich als Cracker bezeichnen.
-
- - Benutzt nur W32Dasm & hiew , wenn es nicht anders geht , beispielsweise , wenn ihr einen Nag Screen killen
- , oder ein Time Limit auschalten wollt , und es keine m÷glichkeit zur Freischaltung des Programmes gibt.
-
- - Viele Labbern von www.fravia.org und schwΣrmen davon ..bis heute ist mir nicht klar , was an dieser Seite so
- toll sein soll , also FiNGER WEG von Fravia :P
-
- - Programme fⁿr Cracker gibts bei http://cracking.tsx.org !
-
- - Denkt nicht , wenn ihr dieses Tutorial durchgearbeitet habt , ihr seit mit allem Wasser gewaschen ,
- besorgt euch lieber viele viele andere Turorials von Beginner bis Experte um immer besser zu werden .
- Und testet euer wissen auch in der Praxis , also nicht nur dumm rum labbern sondern auch cracken :P
-
-
- =(*)= Greetz & Flames =(*)=
-
- Personal Greetz fly out to: GigaStorm , possible , NiGHT Fall , wilkins , |Marvel|
- _eNiGMa_ , RaT , chr0me\\ , sorT8 , ratso , _NB_ ,
- PsyCHo_CC and :MARQUIS: (na kennste mich noch:)
-
- Flames fly out to : Flames gibtet heude nich , wollen ma nich so sein! :P
-
-
- see yaa
-
- GiGA - USSC/THE COUNCiL - mein.onkel.is.ne@tande.com
-
- P.S.: Mal sehen wie die Resonannnz (hups , wie schreibt man das doch gleich) auf dieses Turorial ist ,
- wenn gut , schieb ich vielleich noch ein IDA Tutorial nach.